package br.com.fieo.sgee.exception;

import java.util.HashMap;
import java.util.Map;

/**
 * Classe para controlar os erros da entidade usuário
 *
 * @author rbueno
 */
public class ValidFieldException extends Exception {

    /** Mensagem de erro para quando um campo não é válidado, retorna a frase no masculino */
    public static final String FIELD_NOT_EMPTY_M = "não pode ser vazio!";
    /** Mensagem de erro para quando um campo não é válido, retorna a frase no feminino */
    public static final String FIELD_NOT_EMPTY_F = "não pode ser vazia!";
    /** Mensagem de erro caso o campo tenha um valor de confirmação e não sejá válido */
    public static final String CONFIRMATION_INVALID = "o campo não bate com a confirmação";
    /** Mensagem de erro quando é informado um valor inválido */
    public static final String VALUE_INVALID_POSITIVE = "Valor inválido, deve ser positivo!";
    public static final String ONLY_NUMBERS = "O campo só aceita valores númericos!";
    

    /**
     * Lista com todos os alertas encontrados
     */
    private Map<String, String> messages = new HashMap<String, String>();

    public ValidFieldException() {
    }

    public ValidFieldException(String message) {
        super(message);
    }
    
    /**
     * Construtor privado para evitar que a classe sejá instanciada
     * @param messages de Erro enconradas
     */
    public ValidFieldException(Map messages) {
        this.messages = messages;
    }

    /**
     * Obter todas as mensagens adicionadas ao hash
     * @return HashMap com as mensagem de alerta
     */
    public Map<String, String> getMessages() {
        return messages;
    }

    /**
     * Mensagem de erro caso o valor de caracteres ultrapasse o valor válido
     * @param maximum maximo de caracteres que podem ser informado
     * @return Mensagem de erro padrão
     */
    public static String FIELD_MAXIMUM_SIZE(int maximum) {
        return "deve ter no máximo " + maximum + " caracteres";
    }

    /**
     * Mensagem de erro caso o valor de caracteres sejá menor que o valor válido
     * @param minimum valor minimo de caracteres permitido
     * @return Mensagem de erro padrão
     */
    public static String FIELD_MINIMUM_SIZE(int minimum) {
        return "deve ter no minimo " + minimum + " caracteres";
    }
}
